The present invention relates generally to systems and methods for communicating information in a distributed information system and, in a specific embodiment, provides an improved system for handling virtual objects in a distributed system.
The term "object" has taken on multiple independent meanings through overuse. In object-oriented programming, an object is a programming "package" of data elements and executable code. In a virtual world environment, "object" refers to a construct which is a definite entity, usually modelling an analogous real-world object (a third meaning of the term "object"). To further confuse the terminology, virtual world objects modelling real-world objects are often implemented using OOP objects. Therefore, less confusing terminology is used herein. "Object" refers to a model of a real-world object, such as a rock. "Server" refers to an OOP object.
Several other terms used herein have understood meanings in the field of object-oriented programming. A server encapsulates data and methods (executable code for performing functions specific to that server). The template for that server is called its class. For example, a server for a directory listing might encapsulate (as the data) the directory entries and (as the methods) routines for printing the list, sorting the list, etc. specific to that class. A class does not actually contain any data. The data for an actual server exists only when an "instance" of the server is instantiated. The code for the methods and the structure of the data of a server is described by the class definition for the server's class.
Often, the need exists for an instance of an object to be available in different places, on different machines running different operating systems and different hardware, and for a model of the environment which allows for an object to be distributed over multiple machines.
Currently known distributed objects are organized in a hierarchy controlled at a server node. Such a hierarchical distributed object organization is inflexible, because all control is exercised by a server. For network participants not controlling the server, the result is operational impotence.
Currently, individuals developing object oriented distributed systems may follow a model in which state information with respect to selected objects of a distributed system is replicated in each object with respect to selected other objects of a particular distributed system. Another approach to developing object-oriented distributed systems follows a model in which state information with respect to selected objects of a distributed system must be explicitly communicated for each object with respect to selected other objects of a particular distributed system. Either approach is accompanied by undesired overhead which hampers operability. The first approach has undue overhead due to excessive replication of state information. The second approach is hampered by excessive communications overhead involving objects obtaining state information from each other. It is accordingly desirable to develop a distributed object-oriented system which optimizes the sharing and retention of state information between objects which are established for interoperability with each other.